﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using DECOR.BL.BC;
using DECOR.BL.BE;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json;
using System.Collections.Specialized;

namespace DECOR.Touchapp
{
    public partial class flujoDocumento : System.Web.UI.Page
    {
        string _bloqueo = "";
        string _credito = "";
        string _entrega = "";
        string _global = "";
        string _rechazo = "";
        string pNumPedido = "";
        string Json = "";
        string pRetval = "";
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Request.HttpMethod.Equals("POST"))
            {
                
            }
            else
            {
                //NameValueCollection param = new NameValueCollection();
                //param.Add("Id", Guid.NewGuid().ToString());
                //param.Add("UserId", "VENDEDORLM");
                //param.Add("PwdId", "DECORCENTER");

                CredencialesController.cargarInfo(Request.Params); //(SIEMPRE)
                pNumPedido = Request.Params["pNumPedido"]; //"0000003846"; // 
                //numPedido = "0060018074";  60018074
                pRetval = "{\"success\": {0}, \"errors\":{\"reason\": \"{1}\"}, ";
                pRetval += "\"flujo\": {3}, ";
                pRetval += "\"bloqueo\": \"{4}\", \"credito\": \"{5}\", \"entrega\": \"{6}\", ";
                pRetval += "\"global\": \"{7}\", \"rechazo\": \"{8}\" ";
                pRetval += "}";
                CrearFlujo(pNumPedido);
                Response.ContentType = "application/json; charset=UTF-8";
                Response.Write(pRetval);
            }
        }

        private void CrearFlujo(string _numPedido)
        {
            if (_numPedido.Equals(string.Empty) || _numPedido.Equals("0000000000"))
                {
                    Session["Mensaje"] = "Número de documento inválido.";
                }
                else
                {
                    string cadena_padre; string nodo = "";
                    List<SeguimientoBE> lstSeguimiento = PedidoBC.Instance.buscaDocumentos(_numPedido);
                    StatusBE objStatus = PedidoBC.Instance.verStatus(_numPedido);

                    if (lstSeguimiento.Count > 0 || objStatus != null)
                    {
                        DataTable dt = Converter<SeguimientoBE>.Convert(lstSeguimiento);
                        dt.Columns.Add("Num", typeof(string));
                        dt.Columns.Add("Hijos", typeof(string));
                        string cod;

                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            cadena_padre = "";
                            nodo = "";
                            cod = Convert.ToString(dt.Rows[i]["Jerarquia"]);
                            int longitud = cod.Length - 2;
                            for (int j = 0; j < longitud; j++)
                            {
                                cadena_padre = cadena_padre + cod[j];
                                nodo += ">";
                            }
                            dt.Rows[i]["Num"] = cadena_padre;
                            dt.Rows[i]["TipoDocumento"] = nodo + dt.Rows[i]["TipoDocumento"];
                        }
                        //serializar el DT y luego las variables de status
                        if (dt != null)
                        {
                            Json = JsonConvert.SerializeObject(dt);
                            pRetval = pRetval.Replace("{0}", "true");
                            pRetval = pRetval.Replace("{1}", "");
                            pRetval = pRetval.Replace("{3}", Json);
                        }
                        else
                        {
                            pRetval = pRetval.Replace("{0}", "false");
                            pRetval = pRetval.Replace("{1}", "");
                            pRetval = pRetval.Replace("{3}", "null");
                        }
                        //----
                        _bloqueo = objStatus.Bloqueo;
                        _credito = objStatus.Credito;
                        _entrega = objStatus.Entrega;
                        _global = objStatus.Global;
                        _rechazo = objStatus.Rechazo;
                        pRetval = pRetval.Replace("{4}", _bloqueo);
                        pRetval = pRetval.Replace("{5}", _credito);
                        pRetval = pRetval.Replace("{6}", _entrega);
                        pRetval = pRetval.Replace("{7}", _global);
                        pRetval = pRetval.Replace("{8}", _rechazo);
                    }
                    else
                    {
                        //string mensaje = "No se encontró información para el doc. de ventas especificado.";
                        pRetval = pRetval.Replace("{0}", "false");
                        pRetval = pRetval.Replace("{1}", "");
                        pRetval = pRetval.Replace("{3}", "null");
                    }
                }
            
        }
    }
}
